package me.ree.zkproduct.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 1.同一个Config中的Bean的创建顺序：
 * 由定义顺序决定
 *
 * 2.一个Bean被创建后会被初始化，包括执行它的PostConstruct、afterPropertiesSet、init-method，
 * 然后再创建下一个Bean并初始化。
 * 所以不同Bean的PostConstruct、afterPropertiesSet、init-method的执行顺序取决于Bean的创建顺序，
 * 即使是同一个类的不同实例也是如此。
 * 如果一个类定义了多个init-method方法(作为不同的实例的init-method)，其执行顺序也是取决于实例的创建顺序
 */
@Slf4j
@Configuration
public class TestInitConfig {

    @Bean(initMethod = "testInitMethod1")
    public TestBean testBean() {
        log.info("TestInitConfig testBean exec......");
        TestBean bean = new TestBean();
        // 设置TestBean的属性或其他初始化配置...
        return bean;
    }

    @Bean(initMethod = "testInitMethod2")
    public TestBean testBean2() {
        log.info("TestInitConfig testBean2 exec......");
        TestBean bean = new TestBean();
        // 设置TestBean的属性或其他初始化配置...
        return bean;
    }
}
